home *** CD-ROM | disk | FTP | other *** search
- ;;;"macrotst.scm" Test for R4RS Macros
- ;;; From Revised^4 Report on the Algorithmic Language Scheme
- ;;; Editors: William Clinger and Jonathon Rees
- ;
- ; We intend this report to belong to the entire Scheme community, and so
- ; we grant permission to copy it in whole or in part without fee. In
- ; particular, we encourage implementors of Scheme to use this report as
- ; a starting point for manuals and other documentation, modifying it as
- ; necessary.
-
- ;;; To run this code type
- ;;; (require 'macro)
- ;;; (macro:load "macrotst.scm")
-
- (write "this code should print now, outer, and 7") (newline)
-
- (write
- (let-syntax ((when (syntax-rules ()
- ((when test stmt1 stmt2 ...)
- (if test
- (begin stmt1
- stmt2 ...))))))
- (let ((if #t))
- (when if (set! if 'now))
- if)))
- (newline)
- ;;; ==> now
-
- (write
- (let ((x 'outer))
- (let-syntax ((m (syntax-rules () ((m) x))))
- (let ((x 'inner))
- (m)))))
- (newline)
- ;;; ==> outer
- (write
- (letrec-syntax
- ((or (syntax-rules ()
- ((or) #f)
- ((or e) e)
- ((or e1 e2 ...)
- (let ((temp e1))
- (if temp temp (or e2 ...)))))))
- (let ((x #f)
- (y 7)
- (temp 8)
- (let odd?)
- (if even?))
- (or x
- (let temp)
- (if y)
- y))))
- (newline)
- ;;; ==> 7
-